In the field of computer graphics, complex images are generated from simple geometries such as triangles and polygons. A typical 3-D computer generated image may consist of millions of triangles. Each of these triangles and mode information about the triangles must be stored in memory and processed rapidly. Accordingly, developing techniques for efficiently storing graphics data in memory and for rapidly accessing data from memory are critical to improving the performance of computer graphics systems.
One technique for improving access to memory is binning, which is described in the co-pending, commonly assigned patent application referenced above. Briefly, a binning system divides a display into tiles of predefined pixel dimensions. Geometry data for all polygons that xe2x80x9ctouchxe2x80x9d a tile are stored in an associated area of memory termed a xe2x80x9cbin.xe2x80x9d Each bin is a designated area of the graphics memory which is dynamically allocated for each frame and is accessed by a specially configured memory controller.
From any given viewpoint, not all pixels belonging to triangles will be visible. For example, if the object were a building, and a car was parked behind the building, then the car would not be visible. Thus, 3-D rendering pipelines include a visibility subsystem for determining which pixels are visible. Also, visibility subsystems use an algorithm, such as Z-buffering, to determine which pixels are in front of other pixels. Only the frontmost pixels need be rendered. Additionally, a triangle that contains no visible pixels need not be processed by the rendering engine.
Vertex data includes geometry, color, and possible other data associated with a vertex. The visibility subsystem must rapidly process all geometry information to detect visibility information. Thus, the visibility system requires large memory bandwidth.
Accordingly, techniques for reducing the memory bandwidth requirements for performing visibility processing are vital to increasing the speed of a computer graphics system.
According to one aspect of the invention, a stream of scene data is stored in separate spaces in memory as two separate streams, a Z stream including positional vertex data such as x,y,z coordinate data required to determine whether a geometry is visible, and a C stream including all other vertex data, such as color and texture parameters, required to render a geometry.
According to one aspect of the invention, a stream of scene data is split and stored in separate spaces in memory as two separate streams, a Z stream including positional vertex data such as x,y,z coordinate data required to determine whether a geometry is visible, and a C stream including all other vertex data, such as color and texture parameters, required to render a geometry.
According to another aspect of the invention, all mode data affecting visibility and rendering is store only in the Z stream and is not duplicated in the C stream.
According to another aspect of the invention, only the Z stream is provided to the visibility subsystem to reduce memory bandwidth requirements and improve visibility preprocessing efficiency.
According to another aspect the invention, both Z and C streams are provided to the rendering engine to render geometries determined to be visible by the visibility subsystem.
According to another aspect the invention, only segments representing visible geometries of both Z and C streams are provided to the rendering engine to render geometries determined to be visible by the visibility subsystem.
According to another aspect of the invention, the visibility system provides visible geometries directly to the rendering engine.
Other features and advantages of the invention will now be apparent in view of the following detailed description and appended drawings.